package com.oa.mapper;

import com.oa.beans.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 整个审批流程的接口
 * @author 王鹏韬
 * @version v1.0
 * @dateTime 2025/3/10 11:44
 */
@Mapper
public interface SpMapper {

    /**
     * 获取对应审批流程（请假、加班、出差）  连了用户表以及部门表 可按用户以及部门查询
     * @return 返回所有审批流程信息
     */
    List<SpProcessInstance> getSpInstanceByMore(SpProcessInstance spProcessInstance);

    /**
     * 初次申请时添加实例
     * @param spProcessInstance 实例信息
     * @return 影响的行数
     */
    int addSpInstance(SpProcessInstance spProcessInstance);

    /**
     * 修改审批流程实例信息  申请人修改审批信息
     * @param
     * @return 影响的行数
     */
    int updSpInstance(SpProcessInstance spProcessInstance);

    /**
     * 删除审批流程实例
     * @param id
     * @return 影响的行数
     */
    int delSpProcessInstance(@Param("id") int id);


    //审批步骤



    /**
     * 初次编辑审批步骤（请假与出差） 条件id为空就代表是串行审批  角色职位为空就代表在条件表了有了角色职位
     *         角色职位不为空，代表是串行选择的审批角色职位
     * @return
     */
    int addSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep);

    /**
     * 获取对应的流程的审批步骤 （请假与出差） 根据审批类型外键id
     * @param
     * @return 影响的行数
     */
    List<SpLeaveApprovalStep> getSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep);

    /**
     * 更改对应流程的审批步骤  （请假与出差）
     * @param
     * @return 影响的行数
     */
    int updSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep);

    /**
     * 删除对应流程的审批步骤 （请假与出差）
     * @param id
     * @return 影响的行数
     */
    int delSpLeaveSteps(@Param("id") int id);




    //审批条件


    /**
     * 初次编辑审批步骤对应的审批条件时  (请假出差)
     * @param
     * @return 影响的行数
     */
    int addSpLeaveConitions(SpLeaveApprovalCondition spLeaveApprovalCondition);

    /**
     * 编辑更改审批步骤对应的审批条件时  (请假出差)
     * @param
     * @return 影响的行数
     */
    int updSpLeaveConitions(SpLeaveApprovalCondition spLeaveApprovalCondition);


    /**
     * 删除审批步骤的条件  (请假出差)
     * @param id
     * @return 影响的行数
     */
    int delSpLeaveConitions(@Param("id") int id);

}
